/**
 * 获取年月日
 * @export
 * @param {Date} date
 * @param {string} [splitor='-']
 * @returns
 */
export function getDate (date, splitor = '-') {
  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  return `${year}${splitor}${addZeroPrefix(month)}${splitor}${addZeroPrefix(day)}`;
}

// 获取某日期 多少天后的日期
export function convertDate(date, day, splitor = '-') {
  let tempDate = new Date(date);
  tempDate.setDate(tempDate.getDate() + day);
  let Y = tempDate.getFullYear();
  let M = tempDate.getMonth() + 1 < 10 ? '0' + (tempDate.getMonth() + 1) : tempDate.getMonth() + 1;
  let D = tempDate.getDate() < 10 ? '0' + (tempDate.getDate()) : tempDate.getDate();
  let result = `${Y}${splitor}${M}${splitor}${D}`;
  return result;
}
/**
 * 获取时分秒/时分
 * @export
 * @param {*} date
 * @param {boolean} [withSecond=false]
 * @returns
 */
export function getTime (date, withSecond = false) {
  const hour = date.getHours();
  const minute = date.getMinutes();
  const second = date.getSeconds();

  return withSecond ? `${addZeroPrefix(hour)}:${addZeroPrefix(minute)}:${addZeroPrefix(second)}` : `${addZeroPrefix(hour)}:${addZeroPrefix(minute)}`;
}

// 获取完整日期
export function getFullDate (date) {
  return `${getDate(date)} ${getTime(date)}`;
}

// 判断是否是今天
export function isToday (date) {
  return date.toDateString() === new Date().toDateString();
}

/**
 * 判断是否是同年月
 * @param {string} date
 * @param {string} date2
 * @returns {boolean}
 */
export function isSameYearAndMonth (date = '',date2 = '') {
  date = date.replace(/-/g, '/');
  date2 = date2.replace(/-/g, '/');
  let year = new Date(date).getFullYear();
  let year2 = new Date(date2).getFullYear();
  let month = new Date(date).getMonth();
  let month2 = new Date(date2).getMonth()
  return year == year2 && month == month2;
}

// 判断是否是昨天
export function isYesterday (time) { // !注意这里传入time，我懒得统一格式。。。
  const date = new Date();
  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  const today = `${year}/${month}/${day}`;
  const todayTime = new Date(today).getTime(); // 当天凌晨的时间
  const yesterdayTime = new Date(todayTime - 24 * 60 * 60 * 1000).getTime(); // 昨天凌晨的时间
  return time < todayTime && yesterdayTime <= time;
}

/**
 * 个位数，加0前缀
 * @param {*} number
 * @returns
 */
function addZeroPrefix (number) {
  return number < 10 ? `0${number}` : number;
}

/** 日期格式化
 * @param {{String}} fmt 格式
 * @param {{String}} date 需要格式划的时间
 * @return {{String}} 格式化后的时间
 */
 export function dateFormat(fmt, date = '') {
  let ret;
  date = new Date(date.replace(/-/g, '/'));
  const opt = {
      "Y+": date.getFullYear().toString(),        // 年
      "m+": (date.getMonth() + 1).toString(),     // 月
      "d+": date.getDate().toString(),            // 日
      "H+": date.getHours().toString(),           // 时
      "M+": date.getMinutes().toString(),         // 分
      "S+": date.getSeconds().toString()          // 秒
      // 有其他格式化字符需求可以继续添加，必须转化成字符串
  };
  for (let k in opt) {
      ret = new RegExp("(" + k + ")").exec(fmt);
      if (ret) {
          fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
      };
  };
  return fmt;
}

// 秒 => 时分秒
export function scondTohour(time) {
  if (!time || time <= 0) return '';
  var hours = parseInt(time / 60 / 60);
  var mins = parseInt((time / 60) % 60);
  var scond = parseInt(time % 60);
  return (hours > 0 ? hours + '小时' : '') + (mins > 0 ? mins + '分钟' : '') + (scond > 0 ? scond + '秒' : '')
}

// 分钟 => 小时
export function min2hour(time) {
  if (!time || time <= 0) {
    return '0分钟'
  }
  var hour = Math.floor(time / 60)
  var min = parseInt(time - hour * 60)
  return (hour > 0 ? hour + '小时' : '') + (min > 0 ? min + '分钟' : '')
}